package com.lagou.shardingjdbc.myhint;

import org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.hint.HintShardingValue;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 自定义hint 数据分片策略
 * 外部的业务代码指定 路由配置信息
 * 分配 键 没有再数据表中 或者没有再sql中 而是再业务代码中
 * 读写分配 强制 操作主库
 */
public class MyHintShardingAlgorithm implements HintShardingAlgorithm<Long> {
    @Override
    public Collection<String> doSharding(Collection<String> availableTargetNames, HintShardingValue<Long> shardingValue) {
        Collection<String> reslut = new ArrayList<>();
        for (String availableTargetName : availableTargetNames) {
            for (Long value : shardingValue.getValues()) {
                String v = String.valueOf(value % 2);
                if(availableTargetName.endsWith(v)){
                    reslut.add(availableTargetName);
                }
            }
        }
        return reslut;
    }
}
